package com.academic.system.model;

import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 纵向课题实体类
 */
public class VerticalProject {
    
    private Integer id;
    private String projectName;         // 项目名称
    private String projectNumber;       // 项目号/批准号/合同号
    private String projectCode;         // 项目编号
    private String projectLevel;        // 项目级别
    private BigDecimal totalAmount;     // 总金额（万元）
    private String approvalDepartment;  // 批准部门
    private String projectType;         // 项目类型
    private String duration;            // 期限
    private String paymentRecord;       // 到款记录
    private String participants;        // 参与人
    private String projectLeader;       // 项目负责人
    private String financialAccount;    // 财务账号
    private LocalDate completionDate;   // 结题时间
    private String approvalDocument;    // 批复文件
    private String completionCertificate; // 结题证明
    private String completionReport;    // 结题报告
    private LocalDate submissionDate;   // 填报日期
    private String approvalStatus;      // 审核状态：pending, approved, rejected
    private String approvalComment;     // 审核意见
    private User creator;               // 创建者
    private User approver;              // 审核者
    
    public VerticalProject() {
        this.submissionDate = LocalDate.now();
        this.approvalStatus = "pending";
    }
    
    // Getters and Setters
    public Integer getId() {
        return id;
    }
    
    public void setId(Integer id) {
        this.id = id;
    }
    
    public String getProjectName() {
        return projectName;
    }
    
    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }
    
    public String getProjectNumber() {
        return projectNumber;
    }
    
    public void setProjectNumber(String projectNumber) {
        this.projectNumber = projectNumber;
    }
    
    public String getProjectCode() {
        return projectCode;
    }
    
    public void setProjectCode(String projectCode) {
        this.projectCode = projectCode;
    }
    
    public String getProjectLevel() {
        return projectLevel;
    }
    
    public void setProjectLevel(String projectLevel) {
        this.projectLevel = projectLevel;
    }
    
    public BigDecimal getTotalAmount() {
        return totalAmount;
    }
    
    public void setTotalAmount(BigDecimal totalAmount) {
        this.totalAmount = totalAmount;
    }
    
    public String getApprovalDepartment() {
        return approvalDepartment;
    }
    
    public void setApprovalDepartment(String approvalDepartment) {
        this.approvalDepartment = approvalDepartment;
    }
    
    public String getProjectType() {
        return projectType;
    }
    
    public void setProjectType(String projectType) {
        this.projectType = projectType;
    }
    
    public String getDuration() {
        return duration;
    }
    
    public void setDuration(String duration) {
        this.duration = duration;
    }
    
    public String getPaymentRecord() {
        return paymentRecord;
    }
    
    public void setPaymentRecord(String paymentRecord) {
        this.paymentRecord = paymentRecord;
    }
    
    public String getParticipants() {
        return participants;
    }
    
    public void setParticipants(String participants) {
        this.participants = participants;
    }
    
    public String getProjectLeader() {
        return projectLeader;
    }
    
    public void setProjectLeader(String projectLeader) {
        this.projectLeader = projectLeader;
    }
    
    public String getFinancialAccount() {
        return financialAccount;
    }
    
    public void setFinancialAccount(String financialAccount) {
        this.financialAccount = financialAccount;
    }
    
    public LocalDate getCompletionDate() {
        return completionDate;
    }
    
    public void setCompletionDate(LocalDate completionDate) {
        this.completionDate = completionDate;
    }
    
    public String getApprovalDocument() {
        return approvalDocument;
    }
    
    public void setApprovalDocument(String approvalDocument) {
        this.approvalDocument = approvalDocument;
    }
    
    public String getCompletionCertificate() {
        return completionCertificate;
    }
    
    public void setCompletionCertificate(String completionCertificate) {
        this.completionCertificate = completionCertificate;
    }
    
    public String getCompletionReport() {
        return completionReport;
    }
    
    public void setCompletionReport(String completionReport) {
        this.completionReport = completionReport;
    }
    
    public LocalDate getSubmissionDate() {
        return submissionDate;
    }
    
    public void setSubmissionDate(LocalDate submissionDate) {
        this.submissionDate = submissionDate;
    }
    
    public String getApprovalStatus() {
        return approvalStatus;
    }
    
    public void setApprovalStatus(String approvalStatus) {
        this.approvalStatus = approvalStatus;
    }
    
    public String getApprovalComment() {
        return approvalComment;
    }
    
    public void setApprovalComment(String approvalComment) {
        this.approvalComment = approvalComment;
    }
    
    public User getCreator() {
        return creator;
    }
    
    public void setCreator(User creator) {
        this.creator = creator;
    }
    
    public User getApprover() {
        return approver;
    }
    
    public void setApprover(User approver) {
        this.approver = approver;
    }
} 